﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Backend.JYD.Model.Task;
using Backend.JYD.Model;

namespace Backend.JYD.BLL.Task
{
    public class TaskBaseInfoBLL
    {
        private static readonly IDAL.Task.ITaskBaseInfo idal = Factory.DALFactory.CreateEFDAL<IDAL.Task.ITaskBaseInfo>("DAL.TaskBaseInfoDAL");

        public Int64 AddTaskBaseInfo(TaskBaseInfo info)
        {
            if (info.TaskModelId <= 0) return 0;
            return idal.AddTaskBaseInfo(info);
        }

        public bool UpdateTaskBaseInfo(TaskBaseInfo info)
        {
            if (info.TaskId<=0 || info.TaskModelId <= 0) return false;
            return idal.UpdateTaskBaseInfo(info);
        }

        public TaskBaseInfo GetTaskBaseInfoByTaskId(Int64 taskId)
        {
            if (taskId <= 0) return null;
            return idal.GetTaskBaseInfoByTaskId(taskId);
        }

        public List<TaskBaseInfo> GetTaskBaseInfoByTaskIds(IList<Int64> taskIds)
        {
            if (taskIds == null || taskIds.Count <= 0) return null;
            var infos = idal.GetTaskBaseInfoByTaskIds(taskIds);
            return infos == null ? null : infos.ToList();
        }

        public PageInfo<TaskBaseInfo> GetTaskBaseInfoByPage(PageInfo page)
        {
            return idal.GetTaskBaseInfoByPage(page);
        }

        public PageInfo<TaskBaseInfo> GetTaskBaseInfoByEmpInfo(PageInfo page, List<Int64> roleIds, Int64 empId, DateTime? start, DateTime? end, string status, string code)
        {
            if (end.HasValue) end = end.Value.Date.AddDays(1);
            if (start.HasValue && end.HasValue)
            {
                if (start.Value > end.Value)
                {
                    return null;
                }
            }
            return idal.GetTaskBaseInfoByEmpInfo(page, roleIds, empId, start, end, status, code);
        }
        public PageInfo<TaskBaseInfo> GetOldTaskBaseInfoByEmpInfo(PageInfo page, List<Int64> roleIds, Int64 empId, DateTime? start, DateTime? end, string status, string code)
        {
            if (end.HasValue) end = end.Value.Date.AddDays(1);
            if (start.HasValue && end.HasValue)
            {
                if (start.Value > end.Value)
                {
                    return null;
                }
            }
            return idal.GetOldTaskBaseInfoByEmpInfo(page, roleIds, empId, start, end, status, code);
        }
    }
}
